home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / listings / v_01_05 / 1n05029a < prev    next >
Text File  |  1990-09-10  |  2KB  |  107 lines

  1. ;// DOTBOX2.ASM
  2.  
  3. INCLUDE sa.mac         ; include macro script
  4.     DOSSEG             ; Init EXE file
  5.     .MODEL SMALL
  6.     .STACK 100h
  7.     .CODE
  8. start:
  9. BFORLTE row,5,16       ; 01 main row  shift loop
  10.     mov    AH,2        ; 02 move cursor function
  11.     mov    BH,0        ; 03 on page 0 here
  12.     mov    DX,[v1row]  ; 04 row value to DL (LSB DX)
  13.     xchg   DH,DL       ; 05 row value to DH
  14.     mov    DL,5        ; 06 column 5
  15.     int    10h         ; 07 move cursor via BIOS
  16.   BFORLTE col,5,60     ; 08 nested column write loop
  17.     mov    AH,0Eh      ; 09 write char in teletype fashion
  18.     mov    BH,0        ; 10 on page 0 here
  19.     mov    AL,'.'      ; 11 the '.' character
  20.     int    10h         ; 12 via the BIOS
  21.   EFOR col             ; 13 end nested column loop
  22. EFOR row               ; 14 end main row loop
  23.     mov    AH,4ch      ; exit to DOS
  24.     int    21h         ;
  25.     END    start
  26.  
  27.     
  28.  
  29.  
  30. ;// SA.MAC
  31.  
  32. ;; Macro BIFE name,val1,val2
  33. BIFE MACRO name,val1,val2
  34.     push   AX
  35.     push   DX
  36.   IFDIFI <AX>,<val1>
  37.     mov    AX,val1
  38.   ENDIF
  39.   IFDIFI <DX>,<val2>
  40.     mov   DX,val2
  41.   ENDIF
  42.     cmp    AX,DX
  43.     jne    &name&
  44.     pop    DX
  45.     pop    AX
  46.     ENDM
  47.  
  48. ;; Macro: EIF name
  49. EIF MACRO name
  50.     LOCAL SkipLabel
  51.     jmp SkipLabel
  52. name:
  53.     pop    DX
  54.     pop    AX
  55. SkipLabel:
  56.     ENDM
  57.  
  58. ;; Macro: BELOOP label
  59. BELOOP MACRO label
  60. label:
  61.     ENDM
  62.  
  63. ;; Macro: EBREAK label
  64. EBREAK    MACRO label
  65.     jmp    @@&label&
  66.     ENDM
  67.  
  68. ;; Macro: EELOOP label
  69. EELOOP MACRO label
  70. @&label&:
  71.     jmp    label
  72. @@&label&:
  73.      ENDM
  74.  
  75. ;; Macro: BFORLTE label, val1, val2
  76. BFORLTE MACRO label,val1,val2
  77.     LOCAL    loc1
  78.     jmp    loc1
  79. v1&label&    DW    0 
  80. v2&label&    DW    0 
  81. loc1:
  82.     push   AX
  83.   IFDIFI <AX>,<val1>
  84.     mov    AX,val1
  85.   ENDIF
  86.     mov    CS:[v1&label&],AX
  87.   IFDIFI <AX>,<val2>
  88.     mov    AX,val2
  89.   ENDIF
  90.     mov    CS:[v2&label&],AX
  91.     pop    AX
  92.     inc    CS:[v2&label&]
  93. BELOOP    &label&
  94.     ENDM
  95.  
  96. ;; Macro: EFOR label
  97. EFOR MACRO label
  98.     inc    CS:[v1&label&]
  99.   BIFE loc&label&,CS:[v1&label&],CS:[v2&label&]
  100.     EBREAK    &label&
  101.   EIF  loc&label&
  102. EELOOP    &label&
  103.     ENDM
  104.  
  105.  
  106.  
  107.